package main

import "fmt"

// Animal 动物
type Animal struct {
	name string
}

type Dog struct {
	Feet    int8
	*Animal // 通过嵌套匿名结构体实现继承
}

func (a *Animal) move() {
	fmt.Printf("%s会动！\n", a.name)
}
func (d *Dog) wang() {
	fmt.Printf("%s汪汪叫\n", d.name)
}

func main() {
	d1 := &Dog{
		Feet: 4,
		Animal: &Animal{ // 注意嵌套的是结构体指针
			name: "旺财",
		},
	}
	d1.wang() // 旺财汪汪叫
	d1.move() // 旺财会动！
}
